import axios from 'axios'
import router from './router'
if (process.env.NODE_ENV === 'production') {
  $.ajax({
    url: 'serverconfig.json',
    async: false,
    type: 'get',
    dataType: "json",
    success: function (rs) {
      if (rs.ApiUrl) {
        axios.defaults.baseURL = rs.ApiUrl;
      }
    }
  });
} else { //开发环境 http://10.0.0.201:30429/
  axios.defaults.baseURL = 'http://115.236.17.123:30428/v1'; //在static下的config.js获取服务器地址
}
// 限制快速点击
var requesting = []
var limitTime = 2000 //請求間隔時間

//axios.defaults.timeout = 5000; //响应时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; //配置请求头
// axios.defaults.baseURL = 'http://broker.v1.api.test.linknet.ltd/'; //配置接口地址
let CancelToken = axios.CancelToken
let source = CancelToken.source();

axios.interceptors.request.use(function (config) {
  // config.url = config.url + "?lang=zh" + "?lang=" + sessionStorage.getItem("lang")
  config.url = config.url 
  config.headers['Accept-Language'] = sessionStorage.getItem("lang") == 'zh-TW'?'zh-HK':sessionStorage.getItem("lang")
  // 在发送请求之前做些什么
  if (sessionStorage.getItem('token')) {
    //config.headers['token']=sessionStorage.getItem("token")
    config.headers['Authorization']='Bearer '+sessionStorage.getItem("token")
  }
  // console.log(config)
  // console.log(source.token)
  // 限制快速点击
  var requestingId = JSON.stringify(config.data)
  //console.log(requestingId)
  if (config.method === 'post' && requestingId) {
    let nowTime = new Date().getTime()
    requesting = requesting.filter(item => {
      return item.startTime + limitTime > nowTime //筛选请求时间间隔
    })
    let sessionUrl = requesting.filter(item => {
      return item.requestingId === requestingId; //参数对比
    })
    //if(sessionUrl){
      // if (sessionUrl.length > 0) {
      //   // 请求重复 中断请求（目前还没找到更好的方法，如果return false   会导致页面报错，虽然不影响页面效果及功能
      //   //此处通过修改请求（请求一个没多大作用并且返回快的地址），来达到只请求一次的效果，也可对其进行筛选
      //   // config.url = 'http://www.baidu.com';
      //   // config.method = 'post';
      //   // config.data.cancelToken = source.token
      //   // return config
      //   newConfig.cancelToken = source.token;
      //   return newConfig;
      // } else {
        let item = {
          requestingId: requestingId,
          startTime: nowTime
        }
        requesting.push(item);
        return config
      //}
    //}
    
  } else {
    return config;
  }
  // return config;
}, function (error) {
  // Do something with request error
  return Promise.reject(error);
});

axios.interceptors.response.use(function (response) {
  // if (response.data.code == 0 && response.data.token) { // 判断token是否存在，如果存在说明需要更新token
  //   sessionStorage.setItem('token', response.data.token) // 覆盖原来的token
  // } else { //401 过期token
  //   sessionStorage.removeItem('token') // 删除已经失效或过期的token（不删除也可以，因为登录后覆盖）
  //   router.replace("/login");
  // }
  // token 已过期，重定向到登录页面
  if (response.data.code == '401') {
    sessionStorage.removeItem('token')
    router.replace("/login");
  }
  return response
}, function (error) {
  return Promise.reject(error)
})
export default axios;
